/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package actualizador;

import java.sql.ResultSet;

/**
 *
 * @author TomasQuinteros
 */
public class Actualizador {
  FirebirdConn          ConnFirebird;
  OracleConn            ConnOracle;

  String                        urlBaseFirebird        = "jdbc:firebirdsql://Localhost:3050//AEL3.fdb?defaultResultSetHoldable=True";
  String                        passBaseFirebird    = "masterkey";

  String                        urlBaseOracle        = "jdbc:oracle:thin:@Localhost:1521:XE";
  String                        passBaseOracle    = "admin";

  ResultSet     rs      = null;

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        // TODO code application logic here
        
        //conexion a Firebird
        //conexion a Oracle
        //leer registros pendientes de transferir desde Firebird
        //grabar registros a Oracle
        //actualizar status de registros en Firebird
        //cerrar proceso
        
     
    boolean conectoFirebirdOK = false;
        boolean conectoOracleOK = false;

        Actualizador procesoMigracion = new Actualizador();
        if (procesoMigracion.ConectarFirebird())
            conectoFirebirdOK = true;

       if (procesoMigracion.ConectarOracle() )
           conectoOracleOK = true;



        if (conectoFirebirdOK && conectoOracleOK )  {
                //la siguiente linea se hace x cada tabla
                //crear lista de tablas a migrar (la lista puede estar en la misma base oracle)
                procesoMigracion.migrarDatos("DECLARACION");
                procesoMigracion.CerrarConexionFirebird();
                procesoMigracion.CerrarConexionOracle();
        }
 }
    
   public boolean  ConectarFirebird() {
  ConnFirebird       = new FirebirdConn();
  ConnFirebird.AddLog("                      ");
  ConnFirebird.AddLog("INICIANDO SISTEMA....");
  ConnFirebird.AddLog("BASE MAN:"+urlBaseFirebird);
  ConnFirebird.setUrl(urlBaseFirebird);
  ConnFirebird.setUsr("SYSDBA");
  ConnFirebird.SetPswd(passBaseFirebird);
  return ConnFirebird.Conectar();
 }
   
 public void CerrarConexionFirebird(){
ConnFirebird.Cerrarconexion();
}
 
 public boolean  ConectarOracle() {
  ConnOracle  = new OracleConn();
  ConnOracle.AddLog("                      ");
  ConnOracle.AddLog("INICIANDO SISTEMA....");
  ConnOracle.AddLog("BASE MAN:"+urlBaseOracle);
  ConnOracle.setUrl(urlBaseOracle);
  ConnOracle.setUsr("AEL");
  ConnOracle.SetPswd(passBaseOracle);
  return ConnOracle.Conectar();
 }


public void CerrarConexionOracle(){
  ConnOracle.Cerrarconexion();
}
   
public void migrarDatos(String nombreTabla){

try {
 rs = ConnFirebird.LeerTablaParaMigrar(nombreTabla);
  while (rs.next()) {
   try {
     System.out.println("REGISTROS PENDIENTES: Importaciones en Proceso = "+rs.getString("NUMERO_DESPACHO"));
    
     ConnOracle.getConnection().setAutoCommit(false);
     ConnFirebird.getConnection().setAutoCommit(false);
             
            ConnOracle.EjecutarSql("INSERT INTO DECLARACION (NUMERO_DESPACHO, IMPORTADOR, REFERENCIA_CLIENTE, TIPO_OPERACION, PAIS_ORIGEN, ADUANA, NAVE, FECHA_ETA, FECHA_ACEPTACION, VALOR_CIF, FECHA_PAGO_DER, FECHA_RETIRO, FECHA_RECEPCION, FECHA_APERTURA, CLAUSULA_COMPRA, VALOR_FOB) VALUES ("+rs.getString("NUMERO_DESPACHO")+", "+rs.getString("IMPORTADOR")+", '"+rs.getString("REFERENCIA_CLIENTE")+"', "+rs.getString("TIPO_OPERACION")+", "+rs.getString("PAIS_ORIGEN")+", "+rs.getString("ADUANA")+", '"+rs.getString("NAVE")+"', to_date('" + rs.getString("FECHA_ETA") + "','yyyy/mm/dd'), to_date('" + rs.getString("FECHA_ACEPTACION") + "','yyyy/mm/dd'), "+rs.getString("VALOR_CIF")+",to_date('" + rs.getString("FECHA_PAGO_DER") + "','yyyy/mm/dd'),to_date('" + rs.getString("FECHA_RETIRO") + "','yyyy/mm/dd'), to_date('" + rs.getString("FECHA_RECEPCION") + "','yyyy/mm/dd'), to_date('" + rs.getString("FECHA_APERTURA") + "','yyyy/mm/dd'), "+rs.getString("CLAUSULA_COMPRA")+", "+rs.getString("VALOR_FOB")+")");
             //Thread.sleep(10000);
             
     ConnFirebird.UpdateDatos("UPDATE DECLARACION SET SITUACION='A' WHERE NUMERO_DESPACHO="+rs.getString("NUMERO_DESPACHO"));
     
     //String a=null;
     //a.toLowerCase();
     
     ConnOracle.getConnection().commit();
     ConnFirebird.getConnection().commit();
     //SI ES EXITOSO UN UPDATE AL FIREBIRD
     
      }
       catch (Exception e){
       //System.out.println(e.toString());
           e.printStackTrace();
           ConnOracle.getConnection().rollback();
           ConnFirebird.getConnection().rollback();
           System.out.println("ERROR en la actualización");
       }
      rs.close();
    }
                             
   rs.close();
  }
  catch (Exception e)
  {
  ConnFirebird.AddLog(e.toString());
  }

}   
   
   
   
   
}

